package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebasDAOs16 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;

		// ***********************************************************************************************
		// PERSONA
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<PERSONA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			java.text.SimpleDateFormat simpledf = new java.text.SimpleDateFormat(
					"yyyy/MM/dd");
			java.util.Date fecha;

			fecha = simpledf.parse("1990/03/03");
			java.sql.Date fechaSql = new java.sql.Date(fecha.getTime());

			DireccionTO direccionTO = new DireccionTO();
			direccionTO.setIdDireccion(1);

			PersonaDAO personaDAO = fabricaMySQL.getPersonaDAO();
			PersonaTO personaTO = new PersonaTO(0, "hdf", "juan", "valeron",
					"romulo", fechaSql, false, "55678", "12345678", direccionTO);

			// insert
			if (personaDAO.insertPersona(personaTO)) {
				personaDAO.insertPersona(personaTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// delete
			resultado = personaDAO.deletePersona(8);
			if (resultado == 1)
				System.out.println(">>>>>>>>>>>>>>>>>>> Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// actualiza
			personaTO.setIdPersona(6);
			personaTO.setNombre("chamuco");

			resultado = personaDAO.updatePersona(personaTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			personaTO = personaDAO.findPersonaById(1);
			if (personaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PERSONA");
				ImprimirTO.Imprime(personaTO);
				System.out.println("DIRECCION");
				ImprimirTO.Imprime(personaTO.getDireccionTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT PERSONA +**");
			java.util.Collection<PersonaTO> listPersonaTO = personaDAO
					.selectPersonas();
			if (listPersonaTO != null) {
				for (int i = 0; i < listPersonaTO.size(); i++) {
					personaTO = ((ArrayList<PersonaTO>) listPersonaTO).get(i);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(personaTO);
					System.out.println("DIRECCION");
					ImprimirTO.Imprime(personaTO.getDireccionTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT PERSONA POR APELLIDO PATERNO+**");
			listPersonaTO = personaDAO
					.selectPersonasByApellidoPaterno("jimenez");
			if (listPersonaTO != null) {
				for (int i = 0; i < listPersonaTO.size(); i++) {
					personaTO = ((ArrayList<PersonaTO>) listPersonaTO).get(i);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(personaTO);
					System.out.println("DIRECCION");
					ImprimirTO.Imprime(personaTO.getDireccionTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT PERSONA POR CURP+**");
			listPersonaTO = personaDAO
					.selectPersonasByCURP("ajpi890720hdf12345");
			if (listPersonaTO != null) {
				for (int i = 0; i < listPersonaTO.size(); i++) {
					personaTO = ((ArrayList<PersonaTO>) listPersonaTO).get(i);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(personaTO);
					System.out.println("DIRECCION");
					ImprimirTO.Imprime(personaTO.getDireccionTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT PERSONA POR TELEFONO+**");
			listPersonaTO = personaDAO.selectPersonasByTelefono("56049160");
			if (listPersonaTO != null) {
				for (int i = 0; i < listPersonaTO.size(); i++) {
					personaTO = ((ArrayList<PersonaTO>) listPersonaTO).get(i);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(personaTO);
					System.out.println("DIRECCION");
					ImprimirTO.Imprime(personaTO.getDireccionTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT PERSONA POR NOMBRE APELLIDO PATERNO+**");
			listPersonaTO = personaDAO.selectPersonasByNombreApellidoPaterno(
					"chamuco", "valeron");
			if (listPersonaTO != null) {
				for (int i = 0; i < listPersonaTO.size(); i++) {
					personaTO = ((ArrayList<PersonaTO>) listPersonaTO).get(i);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(personaTO);
					System.out.println("DIRECCION");
					ImprimirTO.Imprime(personaTO.getDireccionTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// ECONOMICO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<ECONOMICO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			PersonaTO personaTO = new PersonaTO();
			personaTO.setIdPersona(1);

			EconomicoDAO economicoDAO = fabricaMySQL.getEconomicoDAO();
			EconomicoTO economicoTO = new EconomicoTO(0, personaTO, true);

			// insert
			if (economicoDAO.insertEconomico(economicoTO)) {
				economicoDAO.insertEconomico(economicoTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// desactiva
			resultado = economicoDAO.DesActivaEconomico(4);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Desactivado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el Desactivado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// actualiza
			economicoTO.setIdEconomico(3);
			economicoTO.setActivo(false);

			resultado = economicoDAO.updateEconomico(economicoTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			economicoTO = economicoDAO.findEconomicoById(1);
			if (economicoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("ECONOMICO");
				ImprimirTO.Imprime(economicoTO);
				System.out.println("PERSONA");
				ImprimirTO.Imprime(economicoTO.getPersonaTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT ECONOMICO +**");
			java.util.Collection<EconomicoTO> listEconomicoTO = economicoDAO
					.selectEconomico();
			if (listEconomicoTO != null) {
				for (int i = 0; i < listEconomicoTO.size(); i++) {
					economicoTO = ((ArrayList<EconomicoTO>) listEconomicoTO)
							.get(i);
					System.out.println("ECONOMICO");
					ImprimirTO.Imprime(economicoTO);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(economicoTO.getPersonaTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT ECONOMICO ACTIVO+**");
			listEconomicoTO = economicoDAO.selectEconomicoActivo();
			if (listEconomicoTO != null) {
				for (int i = 0; i < listEconomicoTO.size(); i++) {
					economicoTO = ((ArrayList<EconomicoTO>) listEconomicoTO)
							.get(i);
					System.out.println("ECONOMICO");
					ImprimirTO.Imprime(economicoTO);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(economicoTO.getPersonaTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR PERSONA");
			economicoTO = economicoDAO.selectEconomicoByPersona(1);
			if (economicoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("ECONOMICO");

				for (int x = 0; x < economicoTO.getListIdEconomico().length; x++) {
					System.out.println("IDECONOMICO");
					System.out.println(economicoTO.getListIdEconomico()[x]);
				}
				for (int x = 0; x < economicoTO.getListActivo().length; x++) {
					System.out.println("ACTIVO");
					System.out.println(economicoTO.getListActivo()[x]);
				}

				System.out.println("Persona");
				ImprimirTO.Imprime(economicoTO.getPersonaTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out
					.println("------------------- BUSQUEDA POR PERSONA ACTIVO");
			economicoTO = economicoDAO.selectEconomicoActivoByPersona(1);
			if (economicoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("ECONOMICO");

				for (int x = 0; x < economicoTO.getListIdEconomico().length; x++) {
					System.out.println("IDECONOMICO");
					System.out.println(economicoTO.getListIdEconomico()[x]);
				}
				for (int x = 0; x < economicoTO.getListActivo().length; x++) {
					System.out.println("ACTIVO");
					System.out.println(economicoTO.getListActivo()[x]);
				}

				System.out.println("Persona");
				ImprimirTO.Imprime(economicoTO.getPersonaTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// BITACORAECONOMICO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<BITACORAECONOMICO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			java.text.SimpleDateFormat simpledf = new java.text.SimpleDateFormat(
					"yyyy/MM/dd");
			java.util.Date fecha;

			fecha = simpledf.parse("2008/03/03");
			java.sql.Date fechaSql = new java.sql.Date(fecha.getTime());

			fecha = simpledf.parse("1990/03/03");
			java.sql.Date fechaSql2 = new java.sql.Date(fecha.getTime());

			PersonaTO personaTO = new PersonaTO();
			personaTO.setIdPersona(1);

			BitacoraEconomicoDAO bitacoraEconomicoDAO = fabricaMySQL
					.getBitacoraEconomicoDAO();
			BitacoraEconomicoTO bitacoraEconomicoTO = new BitacoraEconomicoTO(
					0, 1, personaTO, true, fechaSql);

			// insert
			if (bitacoraEconomicoDAO
					.insertBitacoraEconomico(bitacoraEconomicoTO)) {
				bitacoraEconomicoDAO
						.insertBitacoraEconomico(bitacoraEconomicoTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// actualiza
			bitacoraEconomicoTO.setIdEconomico(5);
			bitacoraEconomicoTO.setActivo(true);

			resultado = bitacoraEconomicoDAO
					.updateBitacoraEconomico(bitacoraEconomicoTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			bitacoraEconomicoTO = bitacoraEconomicoDAO
					.findBitacoraEconomicoById(1);
			if (bitacoraEconomicoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("BITACORAECONOMICO");
				ImprimirTO.Imprime(bitacoraEconomicoTO);
				System.out.println("PERSONA");
				ImprimirTO.Imprime(bitacoraEconomicoTO.getPersonaTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT BITACORAECONOMICO +**");
			java.util.Collection<BitacoraEconomicoTO> listBitacoraEconomicoTO = bitacoraEconomicoDAO
					.selectBitacoraEconomico();
			if (listBitacoraEconomicoTO != null) {
				for (int i = 0; i < listBitacoraEconomicoTO.size(); i++) {
					bitacoraEconomicoTO = ((ArrayList<BitacoraEconomicoTO>) listBitacoraEconomicoTO)
							.get(i);
					System.out.println("BITACORAECONOMICO");
					ImprimirTO.Imprime(bitacoraEconomicoTO);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(bitacoraEconomicoTO.getPersonaTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT BITACORAECONOMICO POR FECHA+**");
			listBitacoraEconomicoTO = bitacoraEconomicoDAO.selectByRangoFecha(
					fechaSql2, fechaSql);
			if (listBitacoraEconomicoTO != null) {
				for (int i = 0; i < listBitacoraEconomicoTO.size(); i++) {
					bitacoraEconomicoTO = ((ArrayList<BitacoraEconomicoTO>) listBitacoraEconomicoTO)
							.get(i);
					System.out.println("BITACORAECONOMICO");
					ImprimirTO.Imprime(bitacoraEconomicoTO);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(bitacoraEconomicoTO.getPersonaTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}
			
			
			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT BITACORAECONOMICO POR ECONOMICO+**");
			listBitacoraEconomicoTO = bitacoraEconomicoDAO.selectByEconomico(1);
			if (listBitacoraEconomicoTO != null) {
				for (int i = 0; i < listBitacoraEconomicoTO.size(); i++) {
					bitacoraEconomicoTO = ((ArrayList<BitacoraEconomicoTO>) listBitacoraEconomicoTO)
							.get(i);
					System.out.println("BITACORAECONOMICO");
					ImprimirTO.Imprime(bitacoraEconomicoTO);
					System.out.println("PERSONA");
					ImprimirTO.Imprime(bitacoraEconomicoTO.getPersonaTO());
				}
			} else {
				System.out.println("No hubo resultados en la seleccion");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR PERSONA");
			bitacoraEconomicoTO = bitacoraEconomicoDAO.selectByPersona(1);
			if (bitacoraEconomicoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("BITACORAECONOMICO");

				for (int x = 0; x < bitacoraEconomicoTO.getListIdOperacion().length; x++) {
					System.out.println("IDBITACORAECONOMICO");
					System.out
							.println(bitacoraEconomicoTO.getListIdOperacion()[x]);
				}

				for (int x = 0; x < bitacoraEconomicoTO.getListIdEconomico().length; x++) {
					System.out.println("IDECONOMICO");
					System.out
							.println(bitacoraEconomicoTO.getListIdEconomico()[x]);
				}
				
				for (int x = 0; x < bitacoraEconomicoTO.getListActivo().length; x++) {
					System.out.println("ACTIVO");
					System.out
							.println(bitacoraEconomicoTO.getListIdEconomico()[x]);
				}

				for (int x = 0; x < bitacoraEconomicoTO.getListFecha().length; x++) {
					System.out.println("FECHA");
					System.out.println(bitacoraEconomicoTO.getListFecha()[x]);
				}

				System.out.println("Persona");
				ImprimirTO.Imprime(bitacoraEconomicoTO.getPersonaTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
	}
}
